Skip to content

Show a remote host's state and next step on its reviews - #973

Merged
thesiti92 merged 6 commits into
remote/9-source-windowsfrom
remote/11-host-status
Oct 14, 2026
Merged

thesiti92 merged 6 commits into
remote/9-source-windowsfrom
remote/11-host-status

Conversation

@thesiti92

@thesiti92 thesiti92 commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Shows a remote host's state the same way everywhere, with one next step, instead of raw error text.

  • A dropped review stream shows a yellow chip in the top bar ("alex-box offline") instead of the "Connection lost. Reconnecting…" banner. Its click runs the host's next step: Retry, Install, or Open Settings. Retry also reopens the review stream at once instead of after its backoff.
  • reviewHostStatus gives each host state one short label, a sentence and that next step. The chip, Home, Settings and the gateway's messages use it.
  • A remote review that has not loaded says what its host is doing, with the next step, instead of a blank page.
  • On Home, an unavailable review says why, with the next step, and opens once its host is back.
  • Settings offers Retry to offline hosts, shows progress and errors for Retry and Install, and shows the host's detail without the state name in front. Open Settings from a review scrolls to Remote hosts.
  • The top bar's context group can shrink, so the chip and agent badges end in an ellipsis instead of pushing Dismiss off the bar.
  • Gateway errors no longer say "did not answer: it did not answer", and unknown network codes read "it failed (CODE)".

Stacked on #949.

Test plan

  • With a host added, pause it (remote.mjs pause a): the chip shows " offline" with Retry, and hovering shows the reason.
  • Reload the window while the host is paused: the review tab shows the host's state and Retry.
  • On Home, click the paused host's review: the message gives the reason and Retry. Resume the host: the review opens.
  • Settings: the paused host's row has Retry. Open Settings from a review's chip on an auth-failed host scrolls to Remote hosts.
  • remote-host journey passes.

@thesiti92
thesiti92 force-pushed the remote/11-host-status branch 3 times, most recently from f385694 to 6ce70b3 Compare October 8, 2026 12:59
@thesiti92
thesiti92 changed the base branch from remote/10-diffr-npm-packages to remote/10-gateway-transport October 8, 2026 12:59
@thesiti92 thesiti92 mentioned this pull request Oct 8, 2026
2 of 4 tasks
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch 2 times, most recently from 47f0a9f to 2e9f03b Compare October 11, 2026 13:28
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch from 2e9f03b to 2fe9306 Compare October 11, 2026 13:34
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch from 2fe9306 to 2d193e7 Compare October 13, 2026 14:44
@thesiti92
thesiti92 added this pull request to stack #1105 October 13, 2026 15:38
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch from 2d193e7 to ab2a372 Compare October 13, 2026 16:00
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch from ab2a372 to e0ef995 Compare October 13, 2026 17:22
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch from e0ef995 to bfcdf0a Compare October 13, 2026 17:38
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch from bfcdf0a to 0e11f5a Compare October 13, 2026 21:49
@thesiti92
thesiti92 removed this pull request from stack #1105 October 13, 2026 22:42
@thesiti92
thesiti92 changed the base branch from remote/10-gateway-transport to remote/9-source-windows October 13, 2026 22:42
@thesiti92
thesiti92 added this pull request to stack #1117 October 13, 2026 22:42
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch 2 times, most recently from 77b0217 to f590b1a Compare October 13, 2026 22:54
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch from 74f9574 to f82c6d8 Compare October 14, 2026 18:03
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch 2 times, most recently from bb0fb1f to cfb9301 Compare October 14, 2026 19:29
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch from cfb9301 to eefbcfb Compare October 14, 2026 19:37
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch from eefbcfb to fcf5033 Compare October 14, 2026 19:44
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch 2 times, most recently from bc1e156 to 0fef570 Compare October 14, 2026 19:56
@thesiti92
thesiti92 removed this pull request from stack #1117 October 14, 2026 20:13
@thesiti92
thesiti92 added this pull request to stack #1131 October 14, 2026 20:14
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch from 0fef570 to 0eb6720 Compare October 14, 2026 20:18
@thesiti92
thesiti92 marked this pull request as ready for review October 14, 2026 20:20
The shared review stream waits up to 30 seconds between reconnect
attempts. reconnect() starts a new attempt now, with a fresh backoff.

Agent-Session: 13cd2035-0029-45cb-a2c9-65f0c01b6460
Agent-Session: e9b9e23e-de55-4291-9391-cd234f736397
Agent-Session: 5368a6f5-df0c-4411-8eec-4b9cccbfbef0
Agent-Session: f086ac47-f054-41fb-8279-be4df7aa2dee
Agent-Session: 3a3376c5-3f72-46df-930c-a66d5c3bcce5
Agent-Session: 7633c50b-998d-4b1e-8ca2-ffb350a26066
Agent-Session: 9a4d92ed-7a0d-42a1-9169-574bca60095b
Agent-Session: 1c093463-922b-435b-a925-664d5d5c3c0a
Agent-Session: 2b51b153-90b5-4a72-a052-fccf0beb9f1c
reviewHostStatus gives every host state one short status, one label, a
sentence and the action that helps: Retry, Install or Settings. The
gateway uses its sentence when a down host has no detail, so the window
no longer reads "alex-box is auth-failed.".

The gateway also stops saying "did not answer: it did not answer", and
an unknown network error reads "it failed (CODE)", not the bare code.

Agent-Session: 5368a6f5-df0c-4411-8eec-4b9cccbfbef0
Agent-Session: f086ac47-f054-41fb-8279-be4df7aa2dee
Agent-Session: 3a3376c5-3f72-46df-930c-a66d5c3bcce5
Agent-Session: 7633c50b-998d-4b1e-8ca2-ffb350a26066
Agent-Session: 9a4d92ed-7a0d-42a1-9169-574bca60095b
Agent-Session: 1c093463-922b-435b-a925-664d5d5c3c0a
Agent-Session: 2b51b153-90b5-4a72-a052-fccf0beb9f1c
A dropped review stream shows a yellow chip in the top bar, such as
"alex-box offline", instead of the "Connection lost" banner. A click
runs the step that helps: Retry, Install or Open Settings. Retry also
reopens the review stream at once.

A remote review that has not loaded shows the same, not a blank page.
On Home, an unavailable review says why, offers the step, and opens
once its host is back.

Agent-Session: 5368a6f5-df0c-4411-8eec-4b9cccbfbef0
Agent-Session: f086ac47-f054-41fb-8279-be4df7aa2dee
Agent-Session: 3a3376c5-3f72-46df-930c-a66d5c3bcce5
Agent-Session: 7633c50b-998d-4b1e-8ca2-ffb350a26066
Agent-Session: 9a4d92ed-7a0d-42a1-9169-574bca60095b
Agent-Session: 1c093463-922b-435b-a925-664d5d5c3c0a
Agent-Session: 2b51b153-90b5-4a72-a052-fccf0beb9f1c
An offline host now gets Retry, and Retry and Install show progress
and any error. A host's line shows its detail alone, without the state
name before it. Open Settings from a review scrolls to Remote hosts.

Agent-Session: 5368a6f5-df0c-4411-8eec-4b9cccbfbef0
Agent-Session: f086ac47-f054-41fb-8279-be4df7aa2dee
Agent-Session: 3a3376c5-3f72-46df-930c-a66d5c3bcce5
Agent-Session: 7633c50b-998d-4b1e-8ca2-ffb350a26066
Agent-Session: 9a4d92ed-7a0d-42a1-9169-574bca60095b
Agent-Session: 1c093463-922b-435b-a925-664d5d5c3c0a
Agent-Session: 2b51b153-90b5-4a72-a052-fccf0beb9f1c
Retry shows for exactly the states reviewHostStatus gives a next step, and the Settings buttons run through useHostAction.
@thesiti92
thesiti92 removed this pull request from stack #1131 October 14, 2026 20:44
@thesiti92
thesiti92 force-pushed the remote/11-host-status branch from 0eb6720 to 08940d1 Compare October 14, 2026 20:44
@thesiti92
thesiti92 added this pull request to stack #1134 October 14, 2026 20:44
@thesiti92
thesiti92 merged commit d493a31 into main Oct 14, 2026
3 checks passed
@thesiti92
thesiti92 deleted the remote/11-host-status branch October 14, 2026 20:58
thesiti92 added a commit that referenced this pull request Oct 14, 2026
…nd Source tree (#974)

When a remote review's host is down, the other surfaces say so and offer
the next step, instead of failing slowly or silently.

- Source windows show the host's state in the status bar. While it is
offline, the notice and the status bar offer Retry. Other states are
text only. A second outage notifies again.
- Opening source on a host that is known to be down fails at once with
the reason and Retry, instead of waiting up to 60 seconds. The canvas
callers no longer leave unhandled rejections.
- Ask blocks its input while the host is down and shows a status banner
with the next step. A question is never queued. Every failed Ask request
offers Try again. A 5xx from the agent list keeps the last list, so Ask
does not disappear.
- Source tree stays visible on remote reviews and is disabled, with the
reason, only when a Source window cannot open. The checkout banner names
the host, and a failed Dismiss shows its error.
- SSH failures read as plain sentences: refused, unknown host name,
timed out, key not accepted, host key changed, and a dropped connection
("<alias> stopped answering over SSH.").

Stacked on #973.

## Test plan
- [ ] Pause a host with Ask open on its review: the input is disabled
and the banner shows the reason with Retry; Source tree is disabled with
the reason as its tooltip; Dismiss stays visible.
- [ ] Wait about a minute: the host's detail reads "<alias> stopped
answering over SSH. It may be asleep, or off this network."
- [ ] With a Source window open, pause its host: the status bar and the
notice offer Retry. Resume, then pause again: a second notice appears.
- [ ] Open file on a paused host's review: a notice with Retry appears
at once.
- [ ] `remote-host` journey passes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants